
import java.io.Serializable;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Observable;

/**
 * Classe de gestion d'ouvrage.
 * 
 * @author IUT, refactoré par E. Ceret
 * @version 2.0
 */
public class Periodique extends Observable implements Serializable {

	// ************************************************************************************************************
	// Constantes
	// ************************************************************************************************************

	private static final long serialVersionUID = 1L;

	// ************************************************************************************************************
	// Attributs
	// ************************************************************************************************************

	private String _issn;
	private String _titre;
	private String _frequence;

	// Attributs d'Association
	private HashMap<String, Parution> _parutions;
	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************

	public Periodique(String issn, String titre, String frequence) {

		this.setIssn(issn);
		this.setTitre(titre);
		this.setFrequence(frequence);
		this.setParutions(new HashMap<String, Parution>());

	} // Fin Constructeur

	// ************************************************************************************************************
	// Méthodes privées
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Affecteurs

	/**
	 * setter de l'attribut auteur
	 * 
	 * @param auteur
	 *            valeur à affecter à l'auteur de l'ouvrage
	 */

	/**
	 * setter de l'attribut num d'ISSN.
	 * 
	 * @param isbn
	 *            valeur à affecter à l'ISBN de la periodique
	 */
	public void setIssn(String issn) {
		this._issn = issn;
	}

	/**
	 * setter de l'attribut titre.
	 * 
	 * @param titre
	 *            valeur à affecter au titre de l'ouvrage
	 */
	public void setTitre(String titre) {
		this._titre = titre;
	}

	public void setFrequence(String frequence) {
		_frequence = frequence;
	}

	
	public void setParutions(HashMap<String, Parution> parutions) {
		_parutions = parutions;
	}
	private void setParution(String id, Parution parution) {
		_parutions.put(id, parution);
	} // Fin setParution
	
	public void notifierObservateurs() {
		this.setChanged();
		this.notifyObservers();
	}
	public Parution ajouterParution(String id) {
			// Creation de la parution
			Parution parution = new Parution(id, this);
			// liaison de périodique à parution
			this.setParution(id, parution);
			// notifie ses observateurs du changement
			this.notifierObservateurs();
			return parution;

	} // Fin ajouterParution
	// ------------------------------------------------------------------------------------------------------------
	// Traitements

	
	

	// ************************************************************************************************************
	// Méthodes publiques
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Accesseurs

	/**
	 * Getter de l'ISBN.
	 * 
	 * @return ISBN de l'ouvrage
	 */
	public String getIssn() {
		return _issn;
	}

	/**
	 * Getter du titre.
	 * 
	 * @return titre de l'ouvrage
	 */
	public String getTitre() {
		return _titre;
	}

	/**
	 * getter de l'auteur.
	 * 
	 * @return auteur de l'ouvrage
	 */
	public String getFrequence() {
		return _frequence;
	}

} // Fin Classe Frequence
